Fault recovery for transaction server

ABSTRACT

A primary server transmits a write transaction to N backup devices. Each backup device records the write transaction to a local redo log stored at a high-performance storage and then transmits a notification to the primary device. When the primary device receives notifications from M of the N backup devices, it commits the write transaction, recording it to a low-performance storage. Once the write transaction has been recorded to the low-performance storage, the primary device requests that the backup devices delete their logs. If the primary device incurs a fault, one of the backup devices becomes the new primary device and determines which backup device has the newest local redo log. The backup device having the newest log sends it to the other backup devices, which update their local redo logs to the same state as the newest log. Thereafter, the new primary device is ready to resume transaction processing.

RELATED APPLICATIONS

The present patent application is a continuation of the previously filedpatent application assigned Ser. No. 11/215,697, filed on Aug. 30, 2005.

FIELD OF THE INVENTION

The present invention relates generally to transaction servers, and moreparticularly to fault recover for such transaction servers.

BACKGROUND OF THE INVENTION

Transaction servers are servers that store data that is modifiable viatransactions. A transaction generally and non-restrictively is a requestto read, write, or update the data stored in a transaction server.Common transactions include orders, purchases, changes, additions, anddeletions. Transaction servers are used in banking systems, stock andsecurities-trading systems, and other types of systems where it isimportant to ensure that any given transaction is never lost, and thatthe data can be recovered in the presence of a fault on the transactionserver.

Transactions may update one or more master files that serve both as anaudit trail and a history for future analyses. A major issue in atransaction-processing system is ensuring that all master files areupdated before the transaction is considered completely processed. Forexample, if two files must be updated, but a system failure occurs afterthe first one but before the second one, the software has to be able toroll back the first update and start over later. Such a process may bereferred to as a two-phase commit process.

More particularly, the two-phase commit process is a technique forensuring that a transaction successfully updates all appropriate filesin a distributed database environment. All servers involved in thetransaction first confirm that the transaction has been received and isrecoverable. Next, each server is told to commit the transaction by atransaction manager. Committing the transaction means that the requestor activity of the transaction is actually performed. For instance, if atransaction involves updating data, committing the transaction meansthat the data is actually updated.

In a two-phase commit system, even if a given server shuts down due to afault after the transaction manager has decided to commit thetransaction, the consistency of the data can be recovered because thedurability of the data is guaranteed at each server. However, in atwo-phase commit process, a write has to be synchronously performed atall the servers. As a result, the completion of a commit process is asslow as the slowest server, such as the slowest storage device of anyserver, within the system. This can be detrimental to high-speedtransaction processing.

Therefore, in general high-speed transaction processing means that atwo-phase commit process and system cannot be employed. One alternativeis the PERSEAS system, described in the prior art reference AthanasiosE. Papathanasiou et al., “Lightweight Transactions on Networks ofWorkstations,” Technical Report 209, September 1997, Institute ofComputer Science, Crete, Greece. In the PERSEAS system, a memory-baseddatabase is mirrored to the memory of a different node or process. Whena transaction updating the database is initiated, an undo log is firstcopied to the memory of a local process, and then the undo log is copiedto the memory of a remote process. However, the PERSEAS system is usefulprimarily in memory-based databases, and does not result in performanceenhancements where the database is ultimately written to a relativelylow-performance storage device like a hard disk drive.

Another alternative is the Echo system described in the prior artreference Timothy Mann et al., “A Coherent Distributed File Cache withDirectory Write-Behind,” Research Report 103, June 1993, Digital SystemsResearch Center, Palo Alto, Calif. In the Echo system, a log is createdfor a process of changing the file system, and redundantly copied to alarge number of cache servers, to improve the reliability ofwrite-behind operations. A write-behind systems is one in which atransaction is not committed, or written, until copies of thetransaction have been stored at a number of cache servers. However, theEcho system also not result in performance enhancements for updates thatare ultimately applied to permanent, or non-volatile, storage deviceslike hard disk drives.

Thus, in a transaction-processing system, committed data should not belost due to a fault within the transaction server. Therefore, thedurability of the data is usually guaranteed by the writing the data toa database stored on a permanent, or non-volatile, storage device like ahard disk drive. However, a hard disk drive is a low-performance storagedevice, in that it has high latency and low throughput as compared to,for instance, volatile semiconductor memory. The PERSEAS and Echosystems that have been described provide solutions that are not relatedto such low-performance storage devices, and thus do not solve theproblem of having a high-performance transaction-processing system inwhich fault recovery is guaranteed and that uses a low-performancestorage device like a hard disk drive.

SUMMARY OF THE INVENTION

The present invention relates to fault recovery for a transactionserver. A method of the invention includes a primary device, such as aprimary server, receiving a write transaction. The primary servertransmits the write transaction to N backup devices, such as N backupservers, where N is greater than one. Each backup device records thewrite transaction to a local redo log stored at a high-performancestorage and transmits a notification to the primary device that thewrite transaction has been recorded. When the primary device receivesnotifications from M of the N backup devices, where M is less than N,the primary device commits the write transaction, including recording itto a low-performance storage. Once the primary device has receivednotification or confirmation that the write transaction has beenrecorded to the low-performance storage, it requests or instructs eachbackup device to delete the local redo log for the write transaction.

If the primary device incurs a fault, one of the backup devices becomesthe new primary device. The new primary device determines which of thebackup devices has the newest local redo log. Where the new primarydevice has the newest local redo log, it sends the newest local redo logto the other backup devices. Where one of the other backup devices hasthe newest local redo log, the new primary device requests that it sendthe newest local redo log to all other of the backup devices. As eachbackup device receives the newest local redo log, it updates its localredo log to the same state as the newest local redo log received. Afterthis process is performed, the new primary device is ready to resumeservice, such that it is capable of receiving and committing additionalor new write transactions.

A system of the present invention includes N backup devices and aprimary device. Each backup device has a high-performance storage. Theprimary device is to transmit a write transaction to the N backupdevices for recording to local redo logs stored at theirhigh-performance storages, which may be volatile or non-volatilesemiconductor memory. Upon receiving notifications from M of the Nbackup devices that the write transaction has been recorded, the primarydevice commits the write transaction. For instance, the system mayinclude a low-performance storage, such as a hard disk drive. Theprimary device thus records the write transaction to the low-performancestorage to commit the write transaction.

An article of manufacture of the invention includes a computer-readablemedium and means in the medium. The computer-readable medium may be arecordable data storage medium, a modulated carrier signal, or anothertype of computer-readable medium. The means is for transmitting a writetransaction to N backup devices for recording to local redo logs storedat high-performance storages of the N backup devices. The means isfurther for committing the write transaction upon receivingnotifications from M of the N backup devices that the write transactionhas been recorded.

Still other aspects and embodiments of the invention will becomeapparent by reading the detailed description that follows, and byreferring to the accompany drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings referenced herein form a part of the specification.Features shown in the drawing are meant as illustrative of only someembodiments of the invention, and not of all embodiments of theinvention, unless otherwise explicitly indicated, and implications tothe contrary are otherwise not to be made.

FIG. 1 is a diagram of a transaction-processing system, according to anembodiment of the invention.

FIG. 2 is a flowchart of a method for committing transactions within thetransaction-processing system of FIG. 1 in a high-performance manner,according to an embodiment of the invention, and is suggested forprinting on the first page of the patent.

FIG. 3 is a diagram illustratively depicting the performance of themethod of FIG. 2 in relation to the transaction-processing system ofFIG. 1, according to an embodiment of the invention.

FIG. 4 is a method for high-performance recovery of a fault within thetransaction-processing system of FIG. 1, in which transactions arecommitted in accordance with the method of FIG. 2, according to anembodiment of the invention.

FIG. 5 is a diagram illustratively depicting the performance of themethod of FIG. 4 in relation to the transaction-processing system ofFIG. 1, according to an embodiment of the invention.

DETAILED DESCRIPTION OF THE DRAWINGS

In the following detailed description of exemplary embodiments of theinvention, reference is made to the accompanying drawings that form apart hereof, and in which is shown by way of illustration specificexemplary embodiments in which the invention may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention. Other embodiments may be utilized,and logical, mechanical, and other changes may be made without departingfrom the spirit or scope of the present invention. The followingdetailed description is, therefore, not to be taken in a limiting sense,and the scope of the present invention is defined only by the appendedclaims.

FIG. 1 shows a transaction-processing system 100, according to anembodiment of the invention. The system 100 includes a primary server102, a number of backup servers 104A and 104B, and a hard disk drive106. The primary server 102 is more generally a primary device, and mayinclude one or more computing devices. The primary server 102 is theinterface through which requesting devices, such as the requestingdevice 110, send transactions for commitment within thetransaction-processing system 100. As has been described, transactionsare generally and non-restrictively requests to read, write, or updatedata stored within the system 100. The requesting device 110 may beanother server, a client device, or another type of computing device.

The backup servers 104A and 104B are collectively referred to as thebackup servers 104. The backup servers 104 are more generally each abackup device, and may each include one or more computing devices. Thebackup servers 104 provide a backup role to the primary server 102, andupon the primary server 102 incurring a fault such that it has to beshutdown, one of the backup servers 104 may become the new primaryserver. It is said that there are N backup servers 104, where N=2 in thespecific embodiment depicted in FIG. 1. In general, however, there areN>1 of the backup servers 104.

The hard disk drive 106 is more generally a reliable storage device, inthat data persisted to the hard disk drive 106 is guaranteed to be ableto be read later in time. For instance, the hard disk drive 106 may bean array of hard disk drives configured in a redundant array ofindependent disks (RAID) configuration, or in another fault-tolerantconfiguration. However, the hard disk drive 106 is a low-performancestorage device, as compared to other types of storage devices, such assemiconductor memories. That is, even if the hard disk drive 106 is ahigh-performance hard disk drive, such high-performance hard disk drivesare nevertheless slower than other storage devices, like semiconductormemories. The hard disk drive 106 is the primary repository of the dataof the transaction-processing system 100. In one embodiment, the harddisk drive 106 may be a part of an application server that isresponsible for maintaining a database stored on the hard disk drive106.

The backup servers 104 include semiconductor memories 108A and 108B,collectively referred to as the memories 108. The memories 108 arehigh-performance storage devices as compared to other types of storagedevices, such as magnetic storage devices like the hard disk drive 106.That is, even if the memories 108 are low-performance semiconductormemories, such low-performance semiconductor memories are neverthelessfaster than other storage devices, such as hard disk drives.

The memories 108, however, are unreliable storage devices. For instance,the memories 108 may be volatile memory devices that lose their contentswhen power is removed from the memories 108, in contradistinction to anon-volatile storage device, like the hard disk drive 106, which retainsits contents when power is removed from the hard disk drive 106.Furthermore, even where the memories 108 are non-volatile memorydevices, they may still be unreliable in that they do not have thereliability of other storage devices, like the hard disk drive 106. Forinstance, the hard disk drive 106 may be configured in a RAIDconfiguration that provides fault tolerance should one of itsconstituent drives fails, whereas the memories 108 may not be configuredin any sort of fault-tolerant configuration.

In general, the hard disk drive 106 has higher storage capability thanthe memories 108 do. For example, the hard disk drive 106 may havestorage measured in terms of gigabytes or terabytes, whereas thememories 108 may just have storage measured in terms of megabytes orgigabytes. Thus, the hard disk drive 106, as the primary repository ofthe data of the transaction-processing system 100, is capable of storingall the data of the system 100. By comparison, at best the memories 108can only store a portion of the data of the transaction-processingsystem 100, and may not be able to store all the data of the system 100.

FIG. 2 shows a method 200 for committing a transaction within thetransaction-processing system 100 of FIG. 1, according to an embodimentof the invention. The parts of the method 200 are performed by theprimary server 102, except as otherwise indicated. For instance, theparts 208 and 210 of the method 200 are performed by each of the backupservers 104. The method 200 may be implemented in one embodiment asparts of a computer program stored on a computer-readable medium.

The primary server 102 receives a write transaction from the requestingdevice 110 (202). A write transaction is generally referred to herein asa transaction to create, modify, update, or delete data within thetransaction-processing system 100. For instance, in a database system, awrite transaction may be a request to create a new record, modify orupdate an existing recording, ot delete an existing record. The primaryserver 102 transmits the write transaction to all of the N backupservers 104 (204).

Each of the N backup servers 104 then performs the following (206). Eachbackup server first records the write transaction to a local redo logstored in its respective memory, such as one of the memories 108. Alocal redo log is a description of the write transaction. In oneembodiment, the local redo log specifies the step or steps that have tobe performed in order to effectuate the write transaction on the datastored in the hard disk drive 106. For example, a given writetransaction may be to change the data of an existing record from A to B.To effectuate this write transaction, a new record may first be createdin which the data thereof is B. The old record, having the data A, maythen be deleted, and the new record, having the data B, replaced for theold record. Each backup server then sends a notification to the primaryserver 102 that it has thus recorded the write transaction (210).

The backup servers 104 may perform the parts 208 and 210 at differenttimes. For instance, one of the backup servers 104 may be inherentlyfaster than the other backup server and thus performs the parts 208 and210 more quickly. Alternatively, one of the backup servers 104 may becurrently processing other tasks, such that the other backup serverperforms the parts 208 and 210 more quickly, even if this latter backupserver intrinsically operates at the same speed as or even slower thanthe former backup server. As a result, the primary server 102 receives anotification from a given backup server (212) at potentially differenttimes.

If the primary server 102 has not yet received notifications from M ofthe N backup servers 104 (214), where M is less than N, then the primaryserver 102 waits until it has received notifications from M of the Nbackup servers 104, before it commits the write transaction (216). Thus,having more than one backup server 104—that is, having N>1—ensures thatthere is redundancy within the transaction-processing system 100, evenwith respect to the backup servers 104 thereof. However, committing thewrite transaction when just M of the N backup servers 104, where 0<M<N,have notified the primary server 102 that they have recorded the writetransaction, ensures that the system 100 operates in a high-performancemanner. For example, there may be N=9 backup servers, where M=7. Thus,even if one or two of the backup servers is performing slowly, this factdoes not slow down commitment of write transactions within the entiresystem 100, since the primary server 102 only waits for M=7 of thebackup severs to notify that they have recorded the write transactionsbefore committing the transactions. In one embodiment, N>2 and M>1.

Committing the write transaction can involve performing the parts 218and 220 in one embodiment of the invention. The requesting device 110 isnotified that the write transaction has been committed (218). The writetransaction is also recorded to the low-performance storage device,namely the hard disk drive 106 (220). Recording the write transaction tothe hard disk drive 106 means that the write transaction is actuallyprocessed in relation to the data of the transaction-processing system100 as stored on the hard disk drive 106. That is, whereas the redo logsof the memories 108 store the step or steps needed to process the writetransaction, the hard disk drive 106 actually stores the data of thesystem 100, such that the write transaction is processed in relation tothis data.

In one embodiment, the write transaction may be considered as beingcommitted even before it has been recorded to the hard disk drive 106,so long as M of the N backup servers 104 have record the writetransaction in question. In such an embodiment, transaction processingis especially performed in a high-performance manner, because the localredo logs are stored in high-performance memories 108, whereas the harddisk drive 106 is a low-performance storage device by comparison. Thus,transactions may be committed quickly within the transaction-processingsystem 100, even where the hard disk drive 106 is a low-performancestorage device.

The primary server 102 ultimately receives confirmation or notificationfrom the hard disk drive 106 that the write transaction has beenrecorded to this low-performance storage device (222). At this time, itis known that the data of the transaction-processing system 100 isstored on a reliable storage device, since the hard disk drive 106 is areliable storage device. Therefore, the local redo logs stored on thememories 108 of the backup servers 104 are no longer needed. The primaryserver 102 thus instructs the backup servers 104 to delete their localredo logs from the memories 108 as to the write transaction that is thesubject of the method 200 (224).

The local redo logs are only needed to reconstruct a write transactionwhere the write transaction has not yet been successfully processed inrelation to the data stored on the hard disk drive 106. However, oncethe write transaction has been successfully processed, it is guaranteedby the reliable nature of the hard disk drive 106 that the writetransaction does not have to be reprocessed. Therefore, the local redologs are deleted from the memories 108. As has been described, thememories 108 are smaller in capacity than the hard disk drive 106, sothe local redo logs are maintained or stored in the memories 108 onlyfor as long as needed, such that there is always room within thememories 108 for the local redo logs of other write transactions.

FIG. 3 illustratively depicts the performance of the method 200 of FIG.2 in relation to the transaction-processing system 100, according to anembodiment of the invention. The primary server 102 receives a writetransaction from the requesting device 110, as indicated by the letterA. The primary server 102 thus transmits the write transaction to thebackup servers 104, as indicated by the letters B. The backup servers104 record the write transaction as local redo logs 302A and 302B,collectively referred to as the logs 302, within their memories 108.When this recording process is complete, the backup servers 104 notifythe primary server 102, as indicated by the letters C.

Once the primary server 102 has received M<N such notifications, theprimary server 102 indicates to the requesting device 110 that the writetransaction has been committed, as indicated by the letter D. Theprimary server 102 records the write transaction to the hard disk drive106, as indicated by the letter E, and the hard disk drive 106 reportsback to the primary server 102 that the write transaction has beenprocessed in relation to the data stored thereon, as indicated by theletter F. The primary server 102 finally instructs the backup servers104 to delete their logs 302 as to the write transaction, as indicatedby the letters G. The backup servers 102 thus delete the logs 302.

Thus, in one embodiment, where the hard disk drive 106 is the bottleneckof the transaction-processing system 100 in that it slows downperformance thereof, transactions are recorded to the hard disk drive106 in a write-behind manner, as has been described in relation to themethod 200 of FIG. 2. That is, the transactions are committed in oneembodiment before they are written to the hard disk drive 106. As aresult, the hard disk drive 106 never stores the newest data within thesystem 100. At best, it stores the same data as the memories 108 of thebackup servers 104, and at worst stores older data than the memories108. Recovery can then be performed in a high-speed manner, as will bedescribed, without having to access the hard disk drive 106.

In other words, it is guaranteed that one of the local redo logs 302stores the most recent data within the transaction-processing system100, as compared to the hard disk drive 106. Therefore, should theprimary server 102 fail, recovery can occur in a high-performancemanner, because the hard disk drive 106 does not have to be accessed toreconstruct any of the local redo logs 302. The state of a writetransaction can thus be recovered at high speed, based on one of theredo logs 302. It is guaranteed that one of the redo logs 302 necessaryfor recovery exists at one of the high-performance memories 108, becausethe redo logs 302 are not deleted until the hard disk drive 106 hasprocessed the transaction in question.

The process of the method 200 of FIG. 2, as illustratively described inFIG. 3, is such that when recording has been completed at M of the Nbackup servers 104, commitment is then accomplished on the hard diskdrive 106. Where M>1, there is thus redundancy within the local redologs 302. Transaction recovery is completed at high speed due to thehigh-performance nature of the memories 108, and transaction recoverydoes not require accessing of the hard disk drive 106.

It is noted that in some situations the prior art provides for a redolog, but writes the redo log to a hard disk drive and requires that theschema of the database be changed in order for the redo log to berecorded. However, in practice, there are cases where the schema of adatabase cannot be changed due to customer specifications. Furthermore,writing a redo log to the same hard disk drive to which the data of thetransaction-processing system is written is impractical for two reasons.

First, generally a query is rewritten, in a process known as queryrewriting, before an inquiry is made to the database stored on a harddisk drive. Since a query after rewriting is closed, the redo log has tobe saved in correspondence with a query before rewriting occurs. As aresult, the query before rewriting has to be transferred to the harddisk drive. However, this is inefficient. Second, it takes time to writea redo log before a transaction is completed, which affects transactionprocessing performance. That is, writing a redo log to a hard disk driveis a slow process, since the hard disk drive is a low-performancestorage device.

The redo logs of embodiments of the invention as has been described inrelation to the method 200 avoid these problems. Writing to the harddisk drive 106 is accomplished with write-behind, in that the hard diskdrive 106 is written to only after commit or transaction data has beencopied to the memories 108 of the backup servers 104. This eliminatesthe possibility that the hard disk drive 106 stores the newest data,such that it is always possible to recover the newest data using onlythe high-performance memories 108, without involving the low-performancehard disk drive 106.

FIG. 4 shows a method 400 for recovering from a fault within the primaryserver 102 within the transaction-processing system 100 of FIG. 1,according to an embodiment of the invention. The parts of the method 200are generally performed by a new primary server, such as one of thebackup servers 104, except as otherwise noted. For instance, the parts418 and 420 are performed by each of the backup servers 104, regardlessof whether a given backup server is the new primary server or not. Themethod 400 may be implemented in one embodiment as part of a computerprogram stored on a computer-readable medium.

The primary server 102 incurs a fault (402), such that it fails or isotherwise shutdown. As a result, one of the N backup servers 104 becomesthe new primary server (404). The manner by which one of the N backupservers 104 becomes the new primary server can be accomplished in anymanner. For instance, the backup servers 104 may “race” to become thenew primary server, and the backup server that wins the race becomes thenew primary server. The remaining of the backup servers 104 are referrednow as the N−1 backup servers, where the N backup servers 104 stillinclude the backup server that is the new primary server. That is, theN−1 backup servers include all of the N backup servers 104, except forthe backup server that has become the new primary server.

The new primary server determines which of the N backup servers 104 hasthe newest local redo log(406). The new primary server itself can havethe newest local redo log in one embodiment of the invention. Becausethe backup servers 104 record a write transaction at different speedsand potentially at different times, the primary server 102 may havefailed while some of the backup servers 104 have completed recording thewrite transaction to their local redo logs, and while others have notyet completed recording. Furthermore, the primary server 102 may havefailed before it has instructed all of the backup servers 104 to recorda given write transaction, such that only some of the backup servers 104have recorded the transaction. Thus, the states of the various localredo logs 302 may be different at the different backup servers 104, suchthat only one, or less than all, of the backup servers 104 have localredo logs with the newest data. The local redo log or logs that have thenewest transaction-oriented data are referred to as the newest localredo log or logs.

In one embodiment, the new primary server determines which of the Nbackup servers 104 has the newest local redo log as follows. First, thenew primary server inquires each of the N−1 backup servers as to thenewest commit data that it has stored within its local redo log (408).Next, the new primary server compares the newest commit data receivedfrom each of the N−1 backup servers, as well as the newest commit datathat it has stored in its own local redo log (410). The one of the Nbackup servers that has the newest commit data is thus concluded ashaving the newest local redo log. Where more than one of the N backupservers 104 has the newest local redo log—that is, there is more thanone such log having the same newest commit data—the new primary serverselects one of these servers as having the newest local redo log forpurposes of the method 400.

Where the backup server having the newest local redo log is not the newprimary server, the new primary server requests that this backup serversend the newest local redo log to all other of the N backup servers 104(412). If the new primary server has the newest local redo log, then itsends its newest local redo log itself to all other of the N backupservers 104 (414). Therefore, each of the N backup servers 104 otherthan the backup server having the newest local redo log performs thefollowing (416). First, each such server receives the newest local redolog as has been sent (418), and then each such server updates its localredo log to the same state as the newest local redo log that has beenreceived (420).

As a result, all of the local redo logs of the backup servers 104 arenow up-to-date, and the new primary server can resumetransaction-processing service (422), such that it is capable ofreceiving and committing additional write transactions. Furthermore, anytransactions that are within the local redo logs that have not beencommitted may now be recorded to the hard disk drive 106 and committed.In one embodiment, the method 400 takes no greater than thirty seconds.This is possible because the low-performance hard disk drive 106 is notaccessed for the recovery process of the method 400. Rather, just thehigh-performance memories 108 are accessed during this recovery process.It is guaranteed that the hard disk drive 106 never stores the newesttransaction data, such that just the memories 108 need to be accessedfor recovery.

It is noted that the method 400 that has been described does not requirea separate redo log within the database stored on the hard disk drive106 itself, because there is no possibility that the newest transactiondata is stored on the hard disk drive 106. Thus, even if the schema ofthe database stored on the hard disk drive 106 changes, this does notaffect the redo logs 302 stored in the memories 108. That is, the redologs 302 are independent of the schema of the database for which thetransaction-processing system 100 of FIG. 1 stores data.

The technique that has been described thus makes it possible to recovertransaction data at high speed, without depending on the hard disk drive106. That is, the database itself, which is stored on the hard diskdrive 106, is not depended on for recovery purposes. Rather, just theredo logs 302, stored on the memories 108, are employed to recover froma fault.

FIG. 5 illustratively depicts the performance of the method 400 of FIG.4 in relation to the transaction-processing system 100, according to anembodiment of the invention. The primary server 102 has incurred afault, such that it has been shutdown, as indicated by the server 102being crossed out in FIG. 5. The backup server 104A has become the newprimary server, as indicated by the letter A. The backup server 104determines which of the servers 104 has the newest local redo log. Itdoes this by inquiring the backup server 104B as to its newest commitdata, as indicated by the letter B. The backup server 104A thus comparesthe newest commit data of the backup server 104B to its own newestcommit data.

If the backup server 104A has the newest commit data, then the backupserver 104A has the newest local redo log, and sends this log to thebackup server 104B, which updates its own local redo log to the samestate. If the backup server 104B has the newest commit data, then thebackup server 104B has the newest local redo log, and the backup server104A requests that the backup server 104B send its newest local redo logto the backup server 104A. The backup server 104A then updates its ownlocal redo log to the same state. Once this process has been completed,the backup server 104A is ready to receive new transactions, such asfrom the requesting device 110, as indicated by the letter C. Therecovery process of the method 400 of FIG. 4 as depicted in FIG. 5 at notime requires that the hard disk drive 106 be accessed, and is thus ahigh-speed operation.

It is noted that, although specific embodiments have been illustratedand described herein, it will be appreciated by those of ordinary skillin the art that any arrangement calculated to achieve the same purposemay be substituted for the specific embodiments shown. This applicationis thus intended to cover any adaptations or variations of embodimentsof the present invention. Therefore, it is manifestly intended that thisinvention be limited only by the claims and equivalents thereof.

1. A method comprising: receiving a write transaction by a primarydevice; transmitting the write transaction from the primary device to Nbackup devices, where N is greater than one; by each backup device,recording the write transaction to a local redo log stored at ahigh-performance storage; transmitting a notification to the primarydevice that the write transaction has been recorded; after the primarydevice has received notifications from M of the N backup devices, whereM is less than N, committing the write transaction by the primarydevice; and, after committing the write transaction by the primarydevice, recording the write transaction by the primary device to alow-performance storage, such that the write transaction is recorded bythe primary device to the low-performance storage after the M of the Nbackup devices have each recorded the write transaction to the localredo log stored at the high-performance storage, wherein thelow-performance storage has a lower performance than a performance ofeach high-performance storage.
 2. The method of claim 1, furthercomprising receiving notification by the primary device that the writetransaction has been recorded to the low-performance storage.
 3. Themethod of claim 1, further comprising requesting by the primary deviceto each backup device to delete the local redo log for the writetransaction.
 4. The method of claim 1, wherein receiving the writetransaction by the primary device comprises receiving the writetransaction from a requesting device.
 5. The method of claim 4, whereincommitting the write transaction by the primary device comprisestransmitting a notification to the requesting device that the writetransaction has been committed.
 6. The method of claim 1, furthercomprising, in response to the primary device incurring a fault, one ofthe N backup devices becoming a new primary device, such that remainingof the N backup devices are N−1 backup devices; the new primary devicedetermining which of the N backup devices has a newest local redo log;where the backup device having the newest local redo log is one of theN−1 backup devices, the new primary device requesting the backup devicehaving the newest local redo log to send the newest local redo log toall other of the N backup devices; where the backup device having thenewest local redo log is the new primary device, the new primary devicesending the newest local redo log to the N−1 backup devices; by each ofthe N backup devices except the backup device having the newest localredo log, receiving the newest local redo log from the backup devicehaving the newest local redo log; updating the local redo log to a samestate as the newest local redo log received.
 7. The method of claim 6,wherein the new primary device determining which of the N backup deviceshas the newest local redo log comprises: inquiring each of the N−1backup devices as to newest commit data stored in the local redo logthereof, and, comparing the newest commit data stored in the local redolog of each of the N−1 backup devices and newest commit data stored inthe local redo log of the new primary device to determine which of the Nbackup devices has the newest local redo log.
 8. The method of claim 6,further comprising the new primary device resuming service such that thenew primary device is capable of receiving and committing additionalwrite transactions.
 9. The method of claim 6, wherein the method takes,between the one of the N backup devices becoming the new primary deviceand the local redo log of each of the N backup devices being updated tothe same state as the newest local redo log, no greater than thirtyseconds.
 10. The method of claim 1, wherein N is greater than or equalto three, and M is greater than or equal to two.
 11. The method of claim1, the high-performance storage of each backup device is one of anon-volatile semiconductor memory and a volatile semiconductor memory,and the low-performance storage is a hard disk drive.
 12. The method ofclaim 1, wherein the high-performance storage of each backup device isan unreliable storage device, and the low-performance storage is areliable storage device.
 13. A system comprising: N backup devices,where N is greater than one, and each backup device has ahigh-performance storage; a primary device to transmit a writetransaction to the N backup devices for recording to local redo logsstored at the high-performance storages, and upon receivingnotifications from M of the N backup devices that the write transactionhas been recorded, where M is less than N, to commit the writetransaction; and, a low-performance storage, such that upon receivingthe notifications from M of the N backup devices that the writetransaction has been recorded, the primary device is to record the writetransaction to the low-performance storage in order to commit the writetransaction, wherein the write transaction is recorded by the primarydevice to the low-performance storage after the write transaction hasbeen committed by the primary device, wherein the write transaction isrecorded by the primary device to the low-performance storage after theM of the N backup devices have recorded the write transaction to thelocal redo logs stored at the high-performance storages, and wherein thelow-performance storage has a lower performance than a performance ofeach high-performance storage.
 14. The system of claim 13, wherein theprimary device is further to request that the N backup devices deletethe local redo logs upon receiving notification that the writetransaction has been recorded to the low-performance storage.
 15. Thesystem of claim 13, wherein upon the primary device incurring a fault,one of the N backup devices becomes a new primary device, and the Nbackup devices update the local redo logs stored at the high-performancestorages to a same state as a newest local redo log.
 16. An article ofmanufacture comprising: a computer-readable recordable data storagemedium; and, means in the medium for transmitting a write transaction toN backup devices for recording to local redo logs stored athigh-performance storages thereof, for committing the write transactionupon receiving notifications from M of the N backup devices that thewrite transaction has been recorded, and for recording the writetransaction to a low-performance storage upon receiving thenotifications from M of the N backup devices that the write transactionhas been recorded, where N is greater than one and M is less than N.wherein the write transaction is recorded to the low-performance storageafter the write transaction has been committed, wherein the writetransaction is recorded to the low-performance storage after the M ofthe N backup devices have recorded the write transaction to the localredo logs stored at the high-performance storages, and wherein thelow-performance storage has a lower performance than a performance ofeach high-performance storage.
 17. The article of manufacture of claim16, wherein the means is further for requesting that the N backupdevices delete the local redo logs, upon receiving notification that thewrite transaction has been recorded to the low-performance storage.